<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head><!-- start favicons snippet, use https://realfavicongenerator.net/ --><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png"><link rel="manifest" href="/assets/site.webmanifest"><link rel="mask-icon" href="/assets/safari-pinned-tab.svg" color="#fc4d50"><link rel="shortcut icon" href="/assets/favicon.ico"><meta name="msapplication-TileColor" content="#ffc40d"><meta name="msapplication-config" content="/assets/browserconfig.xml"><meta name="theme-color" content="#ffffff"><!-- end favicons snippet -->
<title>VorbisUtil (ExoPlayer library)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="VorbisUtil (ExoPlayer library)";
        }
    }
    catch(err) {
    }
//-->
var data = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../";
var useModuleDirectories = false;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">com.google.android.exoplayer2.extractor</a></div>
<h2 title="Class VorbisUtil" class="title">Class VorbisUtil</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>com.google.android.exoplayer2.extractor.VorbisUtil</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public final class <span class="typeNameLabel">VorbisUtil</span>
extends <a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">Object</a></pre>
<div class="block">Utility methods for parsing Vorbis streams.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!--   -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="VorbisUtil.CommentHeader.html" title="class in com.google.android.exoplayer2.extractor">VorbisUtil.CommentHeader</a></span></code></th>
<td class="colLast">
<div class="block">Vorbis comment header.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="VorbisUtil.Mode.html" title="class in com.google.android.exoplayer2.extractor">VorbisUtil.Mode</a></span></code></th>
<td class="colLast">
<div class="block">Vorbis setup header modes.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="VorbisUtil.VorbisIdHeader.html" title="class in com.google.android.exoplayer2.extractor">VorbisUtil.VorbisIdHeader</a></span></code></th>
<td class="colLast">
<div class="block">Vorbis identification header.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#iLog(int)">iLog</a></span>&#8203;(int&nbsp;x)</code></th>
<td class="colLast">
<div class="block">Returns ilog(x), which is the index of the highest set bit in <code>x</code>.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static <a href="VorbisUtil.CommentHeader.html" title="class in com.google.android.exoplayer2.extractor">VorbisUtil.CommentHeader</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#readVorbisCommentHeader(com.google.android.exoplayer2.util.ParsableByteArray)">readVorbisCommentHeader</a></span>&#8203;(<a href="../util/ParsableByteArray.html" title="class in com.google.android.exoplayer2.util">ParsableByteArray</a>&nbsp;headerData)</code></th>
<td class="colLast">
<div class="block">Reads a Vorbis comment header.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static <a href="VorbisUtil.CommentHeader.html" title="class in com.google.android.exoplayer2.extractor">VorbisUtil.CommentHeader</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#readVorbisCommentHeader(com.google.android.exoplayer2.util.ParsableByteArray,boolean,boolean)">readVorbisCommentHeader</a></span>&#8203;(<a href="../util/ParsableByteArray.html" title="class in com.google.android.exoplayer2.util">ParsableByteArray</a>&nbsp;headerData,
                       boolean&nbsp;hasMetadataHeader,
                       boolean&nbsp;hasFramingBit)</code></th>
<td class="colLast">
<div class="block">Reads a Vorbis comment header.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static <a href="VorbisUtil.VorbisIdHeader.html" title="class in com.google.android.exoplayer2.extractor">VorbisUtil.VorbisIdHeader</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#readVorbisIdentificationHeader(com.google.android.exoplayer2.util.ParsableByteArray)">readVorbisIdentificationHeader</a></span>&#8203;(<a href="../util/ParsableByteArray.html" title="class in com.google.android.exoplayer2.util">ParsableByteArray</a>&nbsp;headerData)</code></th>
<td class="colLast">
<div class="block">Reads a Vorbis identification header from <code>headerData</code>.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>static <a href="VorbisUtil.Mode.html" title="class in com.google.android.exoplayer2.extractor">VorbisUtil.Mode</a>[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#readVorbisModes(com.google.android.exoplayer2.util.ParsableByteArray,int)">readVorbisModes</a></span>&#8203;(<a href="../util/ParsableByteArray.html" title="class in com.google.android.exoplayer2.util">ParsableByteArray</a>&nbsp;headerData,
               int&nbsp;channels)</code></th>
<td class="colLast">
<div class="block">This method reads the modes which are located at the very end of the Vorbis setup header.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#verifyVorbisHeaderCapturePattern(int,com.google.android.exoplayer2.util.ParsableByteArray,boolean)">verifyVorbisHeaderCapturePattern</a></span>&#8203;(int&nbsp;headerType,
                                <a href="../util/ParsableByteArray.html" title="class in com.google.android.exoplayer2.util">ParsableByteArray</a>&nbsp;header,
                                boolean&nbsp;quiet)</code></th>
<td class="colLast">
<div class="block">Verifies whether the next bytes in <code>header</code> are a Vorbis header of the given <code>
 headerType</code>.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">Object</a></h3>
<code><a href="https://developer.android.com/reference/java/lang/Object.html#clone()" title="class or interface in java.lang" class="externalLink">clone</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang" class="externalLink">equals</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang" class="externalLink">finalize</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang" class="externalLink">getClass</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang" class="externalLink">hashCode</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang" class="externalLink">notify</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang" class="externalLink">notifyAll</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang" class="externalLink">toString</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait(long,int)" title="class or interface in java.lang" class="externalLink" target="_top">wait</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a id="iLog(int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>iLog</h4>
<pre class="methodSignature">public static&nbsp;int&nbsp;iLog&#8203;(int&nbsp;x)</pre>
<div class="block">Returns ilog(x), which is the index of the highest set bit in <code>x</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>x</code> - the value of which the ilog should be calculated.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>ilog(x)</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="https://www.xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-1190009.2.1">
     Vorbis spec</a></dd>
</dl>
</li>
</ul>
<a id="readVorbisIdentificationHeader(com.google.android.exoplayer2.util.ParsableByteArray)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>readVorbisIdentificationHeader</h4>
<pre class="methodSignature">public static&nbsp;<a href="VorbisUtil.VorbisIdHeader.html" title="class in com.google.android.exoplayer2.extractor">VorbisUtil.VorbisIdHeader</a>&nbsp;readVorbisIdentificationHeader&#8203;(<a href="../util/ParsableByteArray.html" title="class in com.google.android.exoplayer2.util">ParsableByteArray</a>&nbsp;headerData)
                                                                throws <a href="../ParserException.html" title="class in com.google.android.exoplayer2">ParserException</a></pre>
<div class="block">Reads a Vorbis identification header from <code>headerData</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>headerData</code> - a <a href="../util/ParsableByteArray.html" title="class in com.google.android.exoplayer2.util"><code>ParsableByteArray</code></a> wrapping the header data.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <a href="VorbisUtil.VorbisIdHeader.html" title="class in com.google.android.exoplayer2.extractor"><code>VorbisUtil.VorbisIdHeader</code></a> with meta data.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../ParserException.html" title="class in com.google.android.exoplayer2">ParserException</a></code> - thrown if invalid capture pattern is detected.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="https://www.xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-630004.2.2">Vorbis
     spec/Identification header</a></dd>
</dl>
</li>
</ul>
<a id="readVorbisCommentHeader(com.google.android.exoplayer2.util.ParsableByteArray)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>readVorbisCommentHeader</h4>
<pre class="methodSignature">public static&nbsp;<a href="VorbisUtil.CommentHeader.html" title="class in com.google.android.exoplayer2.extractor">VorbisUtil.CommentHeader</a>&nbsp;readVorbisCommentHeader&#8203;(<a href="../util/ParsableByteArray.html" title="class in com.google.android.exoplayer2.util">ParsableByteArray</a>&nbsp;headerData)
                                                        throws <a href="../ParserException.html" title="class in com.google.android.exoplayer2">ParserException</a></pre>
<div class="block">Reads a Vorbis comment header.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>headerData</code> - A <a href="../util/ParsableByteArray.html" title="class in com.google.android.exoplayer2.util"><code>ParsableByteArray</code></a> wrapping the header data.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A <a href="VorbisUtil.CommentHeader.html" title="class in com.google.android.exoplayer2.extractor"><code>VorbisUtil.CommentHeader</code></a> with all the comments.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../ParserException.html" title="class in com.google.android.exoplayer2">ParserException</a></code> - If an error occurs parsing the comment header.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="https://www.xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-640004.2.3">Vorbis
     spec/Comment header</a></dd>
</dl>
</li>
</ul>
<a id="readVorbisCommentHeader(com.google.android.exoplayer2.util.ParsableByteArray,boolean,boolean)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>readVorbisCommentHeader</h4>
<pre class="methodSignature">public static&nbsp;<a href="VorbisUtil.CommentHeader.html" title="class in com.google.android.exoplayer2.extractor">VorbisUtil.CommentHeader</a>&nbsp;readVorbisCommentHeader&#8203;(<a href="../util/ParsableByteArray.html" title="class in com.google.android.exoplayer2.util">ParsableByteArray</a>&nbsp;headerData,
                                                               boolean&nbsp;hasMetadataHeader,
                                                               boolean&nbsp;hasFramingBit)
                                                        throws <a href="../ParserException.html" title="class in com.google.android.exoplayer2">ParserException</a></pre>
<div class="block">Reads a Vorbis comment header.

 <p>The data provided may not contain the Vorbis metadata common header and the framing bit.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>headerData</code> - A <a href="../util/ParsableByteArray.html" title="class in com.google.android.exoplayer2.util"><code>ParsableByteArray</code></a> wrapping the header data.</dd>
<dd><code>hasMetadataHeader</code> - Whether the <code>headerData</code> contains a Vorbis metadata common
     header preceding the comment header.</dd>
<dd><code>hasFramingBit</code> - Whether the <code>headerData</code> contains a framing bit.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A <a href="VorbisUtil.CommentHeader.html" title="class in com.google.android.exoplayer2.extractor"><code>VorbisUtil.CommentHeader</code></a> with all the comments.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../ParserException.html" title="class in com.google.android.exoplayer2">ParserException</a></code> - If an error occurs parsing the comment header.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="https://www.xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-640004.2.3">Vorbis
     spec/Comment header</a></dd>
</dl>
</li>
</ul>
<a id="verifyVorbisHeaderCapturePattern(int,com.google.android.exoplayer2.util.ParsableByteArray,boolean)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>verifyVorbisHeaderCapturePattern</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;verifyVorbisHeaderCapturePattern&#8203;(int&nbsp;headerType,
                                                       <a href="../util/ParsableByteArray.html" title="class in com.google.android.exoplayer2.util">ParsableByteArray</a>&nbsp;header,
                                                       boolean&nbsp;quiet)
                                                throws <a href="../ParserException.html" title="class in com.google.android.exoplayer2">ParserException</a></pre>
<div class="block">Verifies whether the next bytes in <code>header</code> are a Vorbis header of the given <code>
 headerType</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>headerType</code> - the type of the header expected.</dd>
<dd><code>header</code> - the alleged header bytes.</dd>
<dd><code>quiet</code> - if <code>true</code> no exceptions are thrown. Instead <code>false</code> is returned.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the number of bytes read.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../ParserException.html" title="class in com.google.android.exoplayer2">ParserException</a></code> - thrown if header type or capture pattern is not as expected.</dd>
</dl>
</li>
</ul>
<a id="readVorbisModes(com.google.android.exoplayer2.util.ParsableByteArray,int)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>readVorbisModes</h4>
<pre class="methodSignature">public static&nbsp;<a href="VorbisUtil.Mode.html" title="class in com.google.android.exoplayer2.extractor">VorbisUtil.Mode</a>[]&nbsp;readVorbisModes&#8203;(<a href="../util/ParsableByteArray.html" title="class in com.google.android.exoplayer2.util">ParsableByteArray</a>&nbsp;headerData,
                                                int&nbsp;channels)
                                         throws <a href="../ParserException.html" title="class in com.google.android.exoplayer2">ParserException</a></pre>
<div class="block">This method reads the modes which are located at the very end of the Vorbis setup header.
 That's why we need to partially decode or at least read the entire setup header to know where
 to start reading the modes.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>headerData</code> - a <a href="../util/ParsableByteArray.html" title="class in com.google.android.exoplayer2.util"><code>ParsableByteArray</code></a> containing setup header data.</dd>
<dd><code>channels</code> - the number of channels.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an array of <a href="VorbisUtil.Mode.html" title="class in com.google.android.exoplayer2.extractor"><code>VorbisUtil.Mode</code></a>s.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../ParserException.html" title="class in com.google.android.exoplayer2">ParserException</a></code> - thrown if bit stream is invalid.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="https://www.xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-650004.2.4">Vorbis
     spec/Setup header</a></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body>
</html>
